package model.game.twothousandfortyeight;

import java.util.Observable;

import controller.Presenter;
import model.game.Model;


public class Game2048Model extends Observable implements Model{

	public void moveUp() {
		//Get game array
		int[][] Game2048Array = getData();
		
		//Get the size of x and y
		int x = Game2048Array.length;
		int y = Game2048Array[0].length;
			
		//TODO write a note
		for(int row=0; row<x; row++){
			for(int column=0; column<y; column++){
				int z=column+1;
				if( Game2048Array[row][z]!=0 && z!=(y-1) ){
					checkSum(Game2048Array[row][column],Game2048Array[row][z]);
				}
				for(z+=1; z<=0; z++){
					if(Game2048Array[row][z]!=0){
						checkSum(Game2048Array[row][column],Game2048Array[row][z]);
						break;
					}
				}
			}
		}
	}

	public void moveDown() {
		//Get game array
		int[][] Game2048Array = getData();
		
		//Get the size of x and y
		int x = Game2048Array.length;
		int y = Game2048Array[0].length;
			
		//TODO write a note
		for(int row=0; row<x; row++){
			for(int column=(y-1); column>0; column--){
				int z=column-1;
				if(Game2048Array[row][z]!=0 && z!=0){
					checkSum(Game2048Array[row][column],Game2048Array[row][z]);
				}
				for(z-=1; z>=0; z--){
					if(Game2048Array[row][z]!=0){
						checkSum(Game2048Array[row][column],Game2048Array[row][z]);
						break;
					}
				}
			}
		}
	}

	public void moveLeft() {
		//Get game array
		int[][] Game2048Array = getData();
		
		//Get the size of x and y
		int x = Game2048Array.length;
		int y = Game2048Array[0].length;
		
		//TODO write a note
		for(int column=0; column<y; column++){
			for(int row=0; row<x; row++){
				int z=row+1;
				if(Game2048Array[z][column]!=0 && z!=(x-1)){
					checkSum(Game2048Array[row][column],Game2048Array[z][column]);
				}
				for(z+=1; z<=0; z++){
					if(Game2048Array[z][column]!=0){
						checkSum(Game2048Array[row][column],Game2048Array[z][column]);
						break;
					}
				}
			}
		}
	}
	
	public void moveRight() {
		//Get game array
		int[][] Game2048Array = getData();
		
		//Get the size of x and y
		int x = Game2048Array.length;
		int y = Game2048Array[0].length;
		
		//TODO write a note
		for(int column=0; column<y; column++){
			for(int row=(x-1); row>0; row--){
				int z=row-1;
				if(Game2048Array[z][column]!=0 && z!=0){
					checkSum(Game2048Array[row][column],Game2048Array[z][column]);
				}
				for(z-=1; z>=0; z--){
					if(Game2048Array[z][column]!=0){
						checkSum(Game2048Array[row][column],Game2048Array[z][column]);
						break;
					}
				}
			}
		}
	}
	
	private void checkSum(int i, int j) {
		// TODO Auto-generated method stub
		
	}
	
	public int[][] getData() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void addObserver(Presenter p) {
		// TODO Auto-generated method stub
		
	}

}
